<?php

namespace SaaS\Forms;

use SaaS\Models\Tenant;
use SaaS\Services\SaaSService;
use Dcat\Admin\Http\JsonResponse;
use Dcat\Admin\Widgets\Form;

class CreateTenantForm extends Form
{

    /**
     * 处理
     * @param array $input
     * @return JsonResponse
     */
    public function handle(array $input): JsonResponse
    {
        $tenant_id = $input['tenant_id'] ?? null;
        if (empty($tenant_id)) {
            return $this->response()
                ->error('字段不全。');
        }

        $tenant = Tenant::where('id', $tenant_id)->first();
        if (!empty($tenant)) {
            return $this->response()
                ->error('租户空间已存在。');
        }

        $result = SaaSService::create($tenant_id);

        if ($result) {
            return $this->response()
                ->success('成功创建租户实例。')
                ->refresh();
        } else {
            return $this->response()
                ->error('创建失败。')
                ->refresh();
        }

    }

    /**
     * 构造表单
     */
    public function form()
    {
        $this->text('tenant_id', '组织名称')
            ->help('小写英文，直接影响到子域名，例如填写 abc，则租户空间的域名为：abc.yoursite.com。')
            ->required();
    }
}
